package fy.rest;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.json.JSONException;

import fy.form.listen.log.LogWriter;
import fy.form.listen.set.OA_UAPAccountContrast;
import fy.hr.dao.LeaveForm_Elimination_Dao;
import fy.uap.bean.ProviderImportFormBean;
import fy.uap.bean.RangeBean;
import fy.uap.operatorImpl.ProviderMessageManager;
import fy.util.MyUtil;

public class ProviderImportFormOperator1 extends AForm_Save_Operator_Rest {
	 private static Log log = LogFactory.getLog(ProviderImportFormOperator1.class);
	private ProviderImportFormBean pifb = new ProviderImportFormBean();

	private List<String> type1List = new ArrayList<String>();
	private List<String> type2List = new ArrayList<String>();
	private List<String> type3List = new ArrayList<String>();

	private List<String> typeName1List = new ArrayList<String>();
	private List<String> typeName2List = new ArrayList<String>();
	private List<String> typeName3List = new ArrayList<String>();

	private List<String> companyIDList = new ArrayList<String>();
	private String senderCompany;

	// 是否制造部导入 true表示由总办导入，选择了多个制造部
	private boolean sign = false;

	private long memberID;

	public String getFormName() {
		return "供应商导入审批表";
	}

	private boolean setSupplierType() {
		try {
			int size = 0;
			if ((size = type1List.size()) == type2List.size()) {
				if (size == type3List.size()) {
					if (size > 0) {
						for (int i = 0; i < size; i++) {
							String type = type3List.get(i);
							String name = typeName3List.get(i);
							if (type == null || "".equals(type)) {
								type = type2List.get(i);
								name = typeName2List.get(i);
								if (type == null || "".equals(type)) {
									type = type1List.get(i);
									name = typeName1List.get(i);
								}

							}
							log.info("type:"+type+"name"+name);
							//浮法FF_C、FF_D、FF_E 转汽玻 C、 D、 E
							 if(type.equals("10020010000000038EEW")){
								 type="100200100000000004ON";
								 name="C类(C)";
		                        }
							 if(type.equals("10020010000000038EEZ")){
								 type="100200100000000004R9";
								 name="E类(E)";
		                        }
							 if(type.equals("10020010000000038EEX")){
								 type="100200100000000004PT";
								 name="D类(D)";
		                        }
							 log.info("type:"+type+"name"+name);
							pifb.addSupplyRange(type);
							pifb.setSupplyRangeMap(type, name);
						}
						return true;
					}
				}
			}

		} finally {
			type1List = null;
			type2List = null;
			type3List = null;

			typeName1List = null;
			typeName2List = null;
			typeName3List = null;
		}
		return false;

	}

	public boolean save() {
		LogFactory.getLog(ProviderImportFormOperator1.class).info(
				"保存**************************************");
		ProviderMessageManager pmm = new ProviderMessageManager();
		pmm.setMemberID(memberID);
		if (pmm.checkMemberIDIsExists(pifb.getMemberCode())) {
			pifb.setApplicationTime(MyUtil.getNowStr());
			if (setSupplierType()) {
				if (!sign || companyIDList.size() == 0) {
					if (!setCompany(senderCompany))
						if (companyIDList.indexOf(senderCompany) == -1)
							companyIDList.add(senderCompany);
				}

				pifb.setCompanyIDList(companyIDList);

				ProviderImportFormDao pifd = new ProviderImportFormDao();
				pifd.setProviderImportFormBean(pifb);
				pifd.getStateReturn();
				pifd.setUapAccountList();
				
				if (pifd.save()) {
					if (pifd.getFailRangeList() != null
							|| pifd.getUnchangingRangeList() != null) {
						StringBuilder sb = new StringBuilder()
								.append("《供应商导入批准表》导入UAP存在未导入的项，单据编号：")
								.append(pifb.getNumber()).append("。");

						if (pifd.getFailRangeList() != null
								&& pifd.getFailRangeList().size() > 0) {
							List<RangeBean> list = pifd.getFailRangeList();
							sb.append("\n导入失败项：");
							for (int i = 0, size = list.size(); i < size; i++) {
								sb.append("\n").append(
										OA_UAPAccountContrast
												.getAccountNameByUapID(list
														.get(i).getPk_corp()));
								sb.append("   ")
										.append(pifb.getSupplyRangeName(list
												.get(i).getPk_invclass()))
										.append("；");
							}
						}

						if (pifd.getUnchangingRangeList() != null
								&& pifd.getUnchangingRangeList().size() > 0) {
							List<RangeBean> list = pifd
									.getUnchangingRangeList();
							sb.append("\n未变更状态项：");
							for (int i = 0, size = list.size(); i < size; i++) {
								sb.append("\n").append(
										OA_UAPAccountContrast
												.getAccountNameByUapID(list
														.get(i).getPk_corp()));
								sb.append("   ")
										.append(pifb.getSupplyRangeName(list
												.get(i).getPk_invclass()))
										.append("；");
								;
							}
						}
						LogWriter.writeLog(MyUtil.getRealPath(this.getClass()),
								sb.toString());
						pmm.sendMessage(sb.toString());
					}

					if (!pifd.isWriteToErpSuccess()) {
						String msg = new StringBuilder()
								.append("《")
								.append(super.formBean.getFlowExport()
										.getFlowTitle())
								.append("》导入ERP发生异常，单据编号：")
								.append(pifb.getNumber())
								.append("。请联系集团采购部相关人员，手工导入。").toString();
						System.out.println(msg);
						pmm.sendMessage(msg);
					}
					if(!pifd.getStateReturn()){
						String msg = new StringBuilder()
						.append("《")
						.append(super.formBean.getFlowExport()
								.getFlowTitle())
						.append("》导入MDM发生异常，单据编号：")
						.append(pifb.getNumber())
						.append("。请联系MDM相关人员，手工导入。").toString();
				System.out.println(msg);
				pmm.sendMessage(msg);
					}

					return true;
				}
			}
		}
		return false;
	}

	@Override
	protected void parseValueExport(String name, String value) {

		if ("导入制造部值".equals(name)) {
			String uapAccount = OA_UAPAccountContrast.getUapAccountID(value);
			if (MyUtil.strIsNotNull(uapAccount))
				sign = true;
			if (uapAccount != null && companyIDList.indexOf(uapAccount) == -1) {
				if (!setCompany(uapAccount))
					companyIDList.add(uapAccount);
			}
		} else if ("供货范围分类1值".equals(name)) {
			type1List.add(value);
		} else if ("供货范围分类2值".equals(name)) {
			type2List.add(value);
		} else if ("供货范围分类3值".equals(name)) {
			type3List.add(value);
		} else if ("供货范围分类1".equals(name)) {
			typeName1List.add(value);
		} else if ("供货范围分类2".equals(name)) {
			typeName2List.add(value);
		} else if ("供货范围分类3".equals(name)) {
			typeName3List.add(value);
		} else if ("供应商名称".equals(name)) {
			pifb.setProviderName(MyUtil.replaceXMLString(value));
		} else if ("供应商编码".equals(name)) {
			pifb.setProviderCode(MyUtil.replaceXMLString(value));
		} else if ("新增原因".equals(name)) {
			pifb.setReason(MyUtil.replaceXMLString(value));
		} else if ("同类供应商".equals(name)) {
			pifb.setSimilarSuppliers(MyUtil.replaceXMLString(value));
		} else if ("企业地址".equals(name)) {
			pifb.setAddress(MyUtil.replaceXMLString(value));
		} else if ("联系人".equals(name)) {
			pifb.setLinkman(MyUtil.replaceXMLString(value));
		} else if ("供货周期".equals(name)) {
			pifb.setSupplyCycle(MyUtil.replaceXMLString(value));
		} else if ("结算银行".equals(name)) {
			pifb.setCvenbank(MyUtil.replaceXMLString(value));
		} else if ("发货地址".equals(name)) {
			pifb.setSupplyAddress(MyUtil.replaceXMLString(value));
		} else if ("电话号码".equals(name)) {
			pifb.setTel(MyUtil.replaceXMLString(value));
		} else if ("发票税码".equals(name)) {
			pifb.setCpurbillcode(MyUtil.replaceXMLString(value));
		} else if ("银行账号".equals(name)) {
			pifb.setBankAccount(MyUtil.replaceXMLString(value));
		} else if ("税务登记号".equals(name)) {
			pifb.setTaxRegister(MyUtil.replaceXMLString(value));
		} else if ("传真号码".equals(name)) {
			pifb.setFax(MyUtil.replaceXMLString(value));
		} else if ("物流方式PK".equals(name)) {
			pifb.setCouttype(MyUtil.replaceXMLString(value));
		} else if ("币种PK".equals(name)) {
			pifb.setCmoneytype(MyUtil.replaceXMLString(value));
		} else if ("质量体系".equals(name)) {
			pifb.setQualitySystem(MyUtil.replaceXMLString(value));
		} else if ("邮编".equals(name)) {
			pifb.setPostCode(MyUtil.replaceXMLString(value));
		} else if ("企业类型PK".equals(name)) {
			pifb.setCompanyType(MyUtil.replaceXMLString(value));
		} else if ("付款条件".equals(name)) {
			pifb.setCcuspaycond(MyUtil.replaceXMLString(value));
		} else if ("属性".equals(name)) {
			pifb.setProperty(MyUtil.replaceXMLString(value));
		} else if ("电子邮箱".equals(name)) {
			pifb.setEmail(MyUtil.replaceXMLString(value));
		} else if ("价格条款".equals(name)) {
			pifb.setCcontent(MyUtil.replaceXMLString(value));
		} else if ("处理意见值".equals(name)) {
			pifb.setOption(MyUtil.replaceXMLString(value));
		} else if ("是否在供应商名录内".equals(name)) {
			pifb.setProviderIsExist(value);
		} else if ("单位选择器".equals(name)) {
			senderCompany = OA_UAPAccountContrast.getUapAccountID(value);
		} else if ("新增原因".equals(name)) {
			pifb.setReason(MyUtil.replaceXMLString(value));
		} else if ("单据编号".equals(name)) {
			pifb.setNumber(value);
		} else if ("日期".equals(name)) {
			pifb.setApplicationDate(MyUtil.getDate(value));
		} else if ("处理意见值".equals(name)) {
			pifb.setOption(MyUtil.replaceXMLString(value));
		} else if ("开户银行".equals(name)) {
			pifb.setcVenBankMemo(MyUtil.replaceXMLString(value));
		} else if ("银行开户名".equals(name)) {
			pifb.setBankAccountName(MyUtil.replaceXMLString(value));
		} else if ("银行代码".equals(name)) {
			pifb.setBankCode(MyUtil.replaceXMLString(value));
		} else if ("是否福耀关联方".equals(name)) {
			pifb.setCvenfygl(MyUtil.strIsNotNull(value) ? value : "否");
			// } else if ("供应商资质类别".equals(name)) {
			// apptitudeClassList.add(MyUtil.replaceXMLString(value));
			// } else if ("开始时间".equals(name)) {
			// apptitudeStartDateList.add(value);
			// } else if ("到期时间".equals(name)) {
			// apptitudeEndDateList.add(value);
			// } else if ("pk_venapt".equals(name)) {
			// pk_venaptList.add(value);
		} else if ("企业类别".equals(name)) {
			pifb.setQylb(MyUtil.replaceXMLString(value));
		} else if ("注册资金".equals(name)) {
			pifb.setZczj(MyUtil.replaceXMLString(value));
		} else if ("成立时间".equals(name)) {
			pifb.setClsj(MyUtil.replaceXMLString(value));
		} else if ("职工总人数".equals(name)) {
			pifb.setZgrs(MyUtil.replaceXMLString(value));
		} else if ("经营场所".equals(name)) {
			pifb.setJycs(MyUtil.replaceXMLString(value));
		} else if ("法人代表".equals(name)) {
			pifb.setFrdb(MyUtil.replaceXMLString(value));
		} else if ("法人代表身份证".equals(name)) {
			pifb.setFrdbsfz(MyUtil.replaceXMLString(value));
		} else if ("年销售额".equals(name)) {
			pifb.setNxse(MyUtil.replaceXMLString(value));
		} else if (OA_UAPAccountContrast.getUapShortNameList().indexOf(name) != -1) {
			if ("1".equals(value)) {
				String uapAccount = OA_UAPAccountContrast
						.getUapAccountIDByUAPShortName(name);
				if (!setCompany(uapAccount)) {
					if (uapAccount != null
							&& companyIDList.indexOf(uapAccount) == -1) {
						companyIDList.add(uapAccount);
					}
				}
			}
		} else if ("人员选择器".equals(name)) {
			memberID = Long.valueOf(MyUtil.strIsNotNull(value) ? value : "0");
			try {
				pifb.setMemberCode(Fy_OrgManager.getMember(memberID).getString(
						"code"));
			} catch (JSONException e) {
				e.printStackTrace();
			}
		}
	}

	private boolean setCompany(String uapAccount) {
		// 福清万达/巴士/包边/福耀四公司供应商导入共享
		if ("1004".equals(uapAccount) || "1005".equals(uapAccount)) {
			if (companyIDList.indexOf("1004") == -1) {
				companyIDList.add("1004");
			}
			if (companyIDList.indexOf("1005") == -1) {
				companyIDList.add("1005");
			}
			if (companyIDList.indexOf("1024") == -1) {
				companyIDList.add("1024");
			}
			if (companyIDList.indexOf("1025") == -1) {
				companyIDList.add("1025");
			}
			return true;
		} else if ("1013".equals(uapAccount) || "1014".equals(uapAccount)) {
			// 长春轿车/ 巴士公司供应商导入共享
			if (companyIDList.indexOf("1013") == -1) {
				companyIDList.add("1013");
			}
			if (companyIDList.indexOf("1014") == -1) {
				companyIDList.add("1014");
			}
			return true;
		} else if ("1006".equals(uapAccount) || "1026".equals(uapAccount)) {
			// 广州汽车玻璃/广州佛山汽车玻璃导入共享
			if (companyIDList.indexOf("1006") == -1) {
				companyIDList.add("1006");
			}
			if (companyIDList.indexOf("1026") == -1) {
				companyIDList.add("1026");
			}
			return true;
		} else if ("1009".equals(uapAccount) || "1032".equals(uapAccount)) {
			// 湖北/武汉荆门导入共享
			if (companyIDList.indexOf("1032") == -1) {
				companyIDList.add("1032");
			}
			if (companyIDList.indexOf("1009") == -1) {
				companyIDList.add("1009");
			}
			return true;
		}
		return false;
	}
}
